package features.advance.leetcode.linkedlist.easy;

import features.advance.leetcode.geometry.doublepointer.easy.ListNode;
import features.advance.leetcode.util.TreeUtil;

/**
 * @author LIN
 * @date 2021-12-10 15:46
 *
 *  203. 移除链表元素
 *
 * 难度：简单
 *
 * 给你一个链表的头节点 head 和一个整数 val ，
 * 请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 。
 *
 *
 * 示例 1：
 *
 *
 * 输入：head = [1,2,6,3,4,5,6], val = 6
 * 输出：[1,2,3,4,5]
 * 示例 2：
 *
 * 输入：head = [], val = 1
 * 输出：[]
 * 示例 3：
 *
 * 输入：head = [7,7,7,7], val = 7
 * 输出：[]
 *
 *
 * 提示：
 *
 * 列表中的节点数目在范围 [0, 104] 内
 * 1 <= Node.val <= 50
 * 0 <= val <= 50
 *
 */
public class Solution203 {

    public static void main(String[] args) {
        Solution solution = new Solution() {
        };
        ListNode head = TreeUtil.parseLinkedList("[1,2,6,3,4,5,6]");
        int val = 6;
        ListNode res = solution.removeElements(head, val);
        System.out.println(res);


    }

    static class Solution {
        public ListNode removeElements(ListNode head, int val) {
            ListNode dummyHead = new ListNode(-1);
            dummyHead.next = head;
            ListNode temp = dummyHead;

            while(temp.next != null){
                if(temp.next.val == val){
                    temp.next = temp.next.next;
                }else{
                    temp = temp.next;
                }
            }
            return dummyHead.next;
        }
    }
}
